<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MTB CAT1 Peripheral driver library: TCPWM        (Timer Counter PWM)</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen_style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><a href="http://www.cypress.com/"><img alt="Logo" src="IFXCYP_one-line.png"/></a></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">MTB CAT1 Peripheral driver library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__group__tcpwm.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#groups">API Reference</a>  </div>
  <div class="headertitle">
<div class="title">TCPWM (Timer Counter PWM)</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">General Description</h2>
<p>The TCPWM driver is a multifunction driver that implements Timer Counter, PWM, Quadrature Decoder, Shift Register and Motion Interface functionality using the TCPWM block. </p>
<p>The functions and other declarations used in this driver are in cy_tcpwm_counter.h, cy_tcpwm_pwm.h, cy_tcpwm_quaddec.h, cy_tcpwm_shiftreg.h, cy_tcpwm_motif.h respectively. Include cy_pdl.h to get access to all functions and declarations in the PDL.</p>
<p>Each TCPWM block is a collection of counters that can all be triggered simultaneously. For each function call, the base register address of the TCPWM being used must be passed first, followed by the index of the counter you want to touch next.</p>
<p>The TCPWM supports eight function modes:</p><ul>
<li>Timer</li>
<li>Capture</li>
<li>Quadrature Decoder</li>
<li>Pulse Width Modulation (PWM)</li>
<li>PWM with dead time insertion (PWMDT)</li>
<li>Pseudo random PWM (PWMPR)</li>
<li>Shift Register</li>
<li>Motion Interface (MOTIF)</li>
</ul>
<p>The TCPWM driver is structured to map these seven functional modes to four high level operating modes:</p><ul>
<li>Timer/Counter (includes Timer, Capture modes)</li>
<li>PWM (PWM, PWMDT, PWMPR)</li>
<li>Quadrature Decoder</li>
<li>Shift Register</li>
<li>MOTIF</li>
</ul>
<p>A brief description on each of the operating modes:</p>
<p><b>Timer/Counter</b> </p>
<p>Use this mode whenever a specific timing interval or measurement is needed. Examples include:</p><ul>
<li>Creating a periodic interrupt for running other system tasks</li>
<li>Measuring frequency of an input signal</li>
<li>Measuring pulse width of an input signal</li>
<li>Measuring time between two external events</li>
<li>Counting events</li>
<li>Triggering other system resources after x number events</li>
<li>Capturing time stamps when events occur</li>
</ul>
<p><br />
<b>PWM</b> </p>
<p>Use this mode when an output square wave is needed with a specific period and duty cycle, such as:</p><ul>
<li>Creating arbitrary square wave outputs</li>
<li>Driving an LED (changing the brightness)</li>
<li>Driving Motors (dead time assertion available)</li>
</ul>
<p><br />
<b>Quadrature</b> <b>Decoder</b> </p>
<p>A quadrature decoder is used to decode the output of a quadrature encoder. A quadrature encoder senses the position, velocity, and direction of an object (for example a rotating axle, or a spinning mouse ball). A quadrature decoder can also be used for precision measurement of speed, acceleration, and position of a motor's rotor, or with a rotary switch to determine user input. <br />
 <br />
<b>Shift</b> <b>Register</b> </p>
<p>Shift Register functionality shifts the counter value to the right. A shift register is used to apply a signal delay function which can be used eg: in detecting frequency shift keying (FSK) signals. A shift register is also used in parallel-in to serial-out data conversion and serial-in to parallel-out data conversion.</p>
<h1><a class="anchor" id="group_tcpwm_version_information"></a>
TCPWM Versions</h1>
<p>There are three versions of TCPWM driver</p>
<p><b>TCPWM</b> <b>Version</b> <b>3</b> </p>
<ul>
<li>The mxtcpwm.3.0 consists of up to 2048, 16-bit or 32-bit counters</li>
<li>Counter groups up to 8*256</li>
<li>Counter compare, period, line_sel and dead time registers are double buffered.</li>
<li>Parallel data path support for CC0/CC1 register through dedicated data interface (only applicable to mxtcpwm 3.1, PSOC C3 do not support this)</li>
<li>Glitch Filter with configurable depth supported on General-purpose triggers used by all counters and specific one-to-one triggers for each counter</li>
<li>Shadow registers available for duty, period, dead time, signal and polarity</li>
<li>Enhanced shadow update mechanism</li>
<li>Independent control of clock pre-scalar and dead time</li>
<li>Configurable PWM dithering on period as well as duty cycle</li>
<li>Configurable option to continue / pause with the ability to enter passive state through kill polarity in debug mode</li>
<li>Output state control for PWM signal during stop or kill operation synchronous to period match</li>
<li>Independent line polarity setting for PWM signal during kill operation</li>
<li>Support up to 4 Motion Interface (MOTIF)<ul>
<li>Support interrupt output for each MOTIF</li>
<li>Hall interface for direct connection to Hall sensors</li>
<li>HW look-up table for advance motor control feedback loop operation</li>
<li>Synchronous modulation support for multiple counters</li>
</ul>
</li>
<li>Support HRPWM (High resolution PWM generation) feature in both 16-bit and 32-bit TCPWM counters (Only applicable to mxtcpwm 3.1, PSOC C3 only has 4 HRPWM blocks on the 32 bit PWMs.)<ul>
<li>HRPWM enhancements are limited to PWM and PWM_DT mode only</li>
<li>HRPWM consists of an analog interpolator (also referred as delay element)</li>
<li>Analog interpolator consists of delay elements which uses the input clock to generate a set of delayed phases. These delayed phases are then used to delay the edges of the incoming PWM from tcpwm.</li>
<li>Analog interpolator is used to shift the edges of line_out and line_compl_out coming as output from the TCPWM to the analog interpolator.</li>
<li>The LSBs are used for fractional or micro ticks for delaying the line_out and line_compl_out outputs for PERIOD/PERIOD_BUFF, CC0/CC0_BUFF, and CC1/CC1_BUFF and DT/DT_BUFF.</li>
<li>Number of LSB bits used for fractional control is control by the design time parameter, GRP_HRPWM_WIDTH.</li>
<li>The remaining bits given by [GRP_CNT_WIDTH-1:GRP_HRPWM_WIDTH] are used by the mxtcpwm counter.</li>
</ul>
</li>
</ul>
<p><b>TCPWM</b> <b>Version</b> <b>2</b> </p>
<ul>
<li>Devices CY8C61x4 and CY8C62x4 use this version.</li>
<li>Supports up to four counter groups (check TRM for actual number of groups supported)</li>
<li>Each counter group consists of up to 256 counters (check TRM for actual number of counters supported)</li>
<li>Each counter<ul>
<li>Can run in one of seven function modes</li>
<li>Supports various counting modes:<ul>
<li>One-shot mode, Continuous mode (Up/Down/Up-down)</li>
</ul>
</li>
<li>Selects input signals<ul>
<li>Start, Reload, Stop, Count, and two Capture event signals</li>
</ul>
</li>
<li>Generates output signals:<ul>
<li>Two output triggers, PWM output, and Interrupt</li>
</ul>
</li>
<li>Trigger Outputs (TR_OUT0/1) and an Interrupt on an event<ul>
<li>Overflow (OV)</li>
<li>Underflow (UN)</li>
<li>Terminal Count (TC)</li>
<li>CC0/1_MATCH</li>
<li>LINE_OUT</li>
</ul>
</li>
<li>Supports debug mode</li>
<li>Each counter can produce two output signals</li>
</ul>
</li>
</ul>
<div class="image">
<img src="tcpwm_v2_block_diagram.png" alt="tcpwm_v2_block_diagram.png"/>
</div>
<ul>
<li><b>Input</b> <b>Trigger</b> <b>Selection</b> <b>and</b> <b>Event</b> <b>Detection</b> <ul>
<li>The counter control signals are generated as follows:<ul>
<li>Selects input signals from two types of trigger multiplexer signals<ul>
<li>Group trigger and one-to-one trigger</li>
<li>The constant '1' and '0' are also used as input triggers</li>
</ul>
</li>
<li>Detects the selected edge from four types<ul>
<li>Rising edge/falling edge/any edge/no edge</li>
</ul>
</li>
<li>Supports software (SW) command<ul>
<li>SW command of Trigger Multiplexer/SW command of TCPWM</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="image">
<img src="tcpwm_v2_input_trigger_sel.png" alt="tcpwm_v2_input_trigger_sel.png"/>
</div>
<ul>
<li><b>Simultaneous</b> <b>Activation:</b> <ul>
<li>When a Trigger Multiplexer block SW command is used, the TCPWM counters can be activated at the same time</li>
</ul>
</li>
</ul>
<div class="image">
<img src="tcpwm_v2_trigger_simultaneously.png" alt="tcpwm_v2_trigger_simultaneously.png"/>
</div>
<p><b>TCPWM</b> <b>Version</b> <b>1</b> </p>
<ul>
<li>Devices CY8C61x6, CY8C61x7, CY8C62x5, CY8C62x6, CY8C62x7, CY8C62x8, CY8C62xA, CY8C63x6, CY8C63x7, CYS0644xxZI-S2D44, CYB0644xxZI-S4D44, CYB06447BZI-BLDX, CYB06447BZI-D54 and CYB06445LQI-S3D42 use this version.</li>
<li>Supports up to 32 counters (check TRM for actual number of counters supported)</li>
<li>Synchronized operation of multiple counters.</li>
<li>16 or 32 bit counter, compare/capture (CC) and period registers.</li>
<li>CC and period registers are double buffered.</li>
<li>Up, down and up/down counting modes.</li>
<li>14 trigger input signals and 2 constant input signals: '0' and '1', for a total of 16 hardware (HW) input signals</li>
<li>Rising edge, falling edge, combined rising/falling edge detection or pass-through on all HW input signals to derive counter events.</li>
<li>The start, reload, stop and capture events can be generated by software.</li>
<li>Clock pre-scaling (1x, 2x, 4x ... 128x).</li>
<li>Support Pseudo Random PWM</li>
<li>3 output trigger signals for each counter to indicate underflow, overflow and cc_match events.</li>
<li>2 PWM complementary output lines for each counter. Dead time insertion ([0, 255] counter cycles).</li>
<li>Support one interrupt output for each counter.</li>
</ul>
<div class="image">
<img src="tcpwm_v1_block_diagram.png" alt="tcpwm_v1_block_diagram.png"/>
</div>
<ul>
<li>Many functions work with an individual counter. You can also manage multiple counters simultaneously for certain functions.</li>
<li>These are listed in the <a class="el" href="group__group__tcpwm__functions__common.html">Functions</a> section of the TCPWM.</li>
<li>You can enable, disable, or trigger (in various ways) multiple counters simultaneously.</li>
<li>For these functions you provide a bit field representing each counter in the TCPWM you want to control.</li>
<li>You can represent the bit field as an ORed mask of each counter, like ((1U &lt;&lt; cntNumX) | (1U &lt;&lt; cntNumX) | (1U &lt;&lt; cntNumX)), where X is the counter number from 0 to 31.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>If none of the input terminals (start, reload(index)) are used, the software event <a class="el" href="group__group__tcpwm__functions__common.html#gabeb6819a4ac18f04f943a70c44b2bbb9">Cy_TCPWM_TriggerStart</a> or <a class="el" href="group__group__tcpwm__functions__common.html#ga8f4ab67e3946d84d77b54e0375eb0e48">Cy_TCPWM_TriggerReloadOrIndex</a> must be called to start the counting.</li>
<li>If count input terminal is not used, the <a class="el" href="group__group__tcpwm__input__modes.html#ga6f8ffc8c36941d7d44290147032fd33b">CY_TCPWM_INPUT_LEVEL</a> macro should be set for the countInputMode parameter and the <a class="el" href="group__group__tcpwm__input__selection.html#ga7369f85b221bf7c70e1a580daa6a6bef">CY_TCPWM_INPUT_1</a> macro should be set for the countInput parameter in the configuration structure of the appropriate mode(Counter <a class="el" href="group__group__tcpwm__data__structures__counter.html">Data Structures</a>, PWM <a class="el" href="group__group__tcpwm__data__structures__pwm.html">Data Structures</a>, QuadDec <a class="el" href="group__group__tcpwm__data__structures__quaddec.html">Data Structures</a>, or Shift Register <a class="el" href="group__group__tcpwm__data__structures__shiftreg.html">Data Structures</a>).</li>
</ul>
</dd></dl>
<h1><a class="anchor" id="group_tcpwm_more_information"></a>
More Information</h1>
<p>For more information on the TCPWM peripheral, refer to the technical reference manual (TRM).</p>
<h1><a class="anchor" id="group_tcpwm_changelog"></a>
Changelog</h1>
<table class="doxtable">
<tr>
<th>Version</th><th>Changes</th><th>Reason for Change </th></tr>
<tr>
<td rowspan="2">1.80 </td><td>Newly added Motion Interface (MOTIF) functionality. </td><td>Added the new Motion Interface for the PSOC C3 (CAT1B) device.  </td></tr>
<tr>
<td><p class="starttd">Updated the following APIs:</p><ul>
<li><a class="el" href="group__group__tcpwm__functions__pwm.html#ga6440d2a9dc8d85056abd62556bee7f82">Cy_TCPWM_PWM_Init</a></li>
<li><a class="el" href="group__group__tcpwm__functions__pwm.html#ga311f238402c63c616ee650d88cea181f">Cy_TCPWM_PWM_GetStatus</a></li>
<li><a class="el" href="group__group__tcpwm__functions__quaddec.html#ga44dc33f42820e7539bcac89efc9418db">Cy_TCPWM_QuadDec_GetStatus</a></li>
<li><a class="el" href="group__group__tcpwm__functions__counter.html#gae39af6cd9306eaca090fa62999fd81af">Cy_TCPWM_Counter_GetStatus</a></li>
</ul>
<p class="endtd">Newly added APIs:</p><ul>
<li><a class="el" href="group__group__tcpwm__functions__common.html#ga950b401d5acbd494be8bb5190d77e9a0">Cy_TCPWM_SetDebugSuspend</a> </li>
</ul>
</td><td>Bug fixing and HRPWM enhancements.  </td></tr>
<tr>
<td rowspan="2">1.70 </td><td>Newly added enum <a class="el" href="group__group__tcpwm__enums.html#ga619cd467ef63110365ad9e01785d7293">cy_en_copy_swap_config_t</a>.<ul>
<li>Newly added API <a class="el" href="group__group__tcpwm__functions__counter.html#gaee3f140d6da2342b0bfb26f629a98ddf">Cy_TCPWM_Counter_SetDirection_Change_Mode</a> and updated API <a class="el" href="group__group__tcpwm__functions__common.html#ga9cce3f9a4b4f0d381565599279a7dd18">Cy_TCPWM_Block_EnableSwap</a>.  </li>
</ul>
</td><td>Supported Glitch filter with configurable depth, HW look-up table for advance motor control, bug fixes and enhancement in reload and swap functionality.  </td></tr>
<tr>
<td><p class="starttd">Newly added APIs :</p><ul>
<li><a class="el" href="group__group__tcpwm__functions__pwm.html#ga19370f61b63e19e9c3b50dfb48ec9fe3">Cy_TCPWM_PWM_SetDT</a>, <a class="el" href="group__group__tcpwm__functions__pwm.html#ga0cb304e03b43541a6529af0782229b20">Cy_TCPWM_PWM_Configure_LineSelect</a>, <a class="el" href="group__group__tcpwm__functions__pwm.html#gae3ebd34cfb62ff24ffa18b26dfd68d31">Cy_TCPWM_PWM_Configure_LineSelectBuff</a>,</li>
<li><a class="el" href="group__group__tcpwm__functions__pwm.html#gabf3eb8ea9123430dfda021b569759e55">Cy_TCPWM_PWM_EnableLineSelectSwap</a>, <a class="el" href="group__group__tcpwm__functions__pwm.html#gadeae5714cda0e42f889c7f8f90702757">Cy_TCPWM_PWM_Set_KillLinePolarity</a>, <a class="el" href="group__group__tcpwm__functions__pwm.html#ga0b559ade9579db19b0642b4b1dfb41c1">Cy_TCPWM_PWM_PWMDeadTimeBuff</a></li>
<li><a class="el" href="group__group__tcpwm__functions__pwm.html#ga193882e8e50e548077775e6bde7fcf8f">Cy_TCPWM_PWM_PWMDeadTimeBuffN</a>, <a class="el" href="group__group__tcpwm__functions__pwm.html#ga00caa836d8b391882405b5ec5b726903">Cy_TCPWM_PWM_SetDTBuff</a>. </li>
</ul>
<p>Updated the following APIs:</p><ul>
<li><a class="el" href="group__group__tcpwm__functions__pwm.html#ga6440d2a9dc8d85056abd62556bee7f82">Cy_TCPWM_PWM_Init</a></li>
<li><a class="el" href="group__group__tcpwm__functions__pwm.html#gab9f1093f64fc39c0be2e8917b9b610cb">Cy_TCPWM_PWM_Configure_Dithering</a></li>
<li><a class="el" href="group__group__tcpwm__functions__pwm.html#ga311f238402c63c616ee650d88cea181f">Cy_TCPWM_PWM_GetStatus</a></li>
<li><a class="el" href="group__group__tcpwm__functions__quaddec.html#ga44dc33f42820e7539bcac89efc9418db">Cy_TCPWM_QuadDec_GetStatus</a></li>
<li><a class="el" href="group__group__tcpwm__functions__counter.html#gae39af6cd9306eaca090fa62999fd81af">Cy_TCPWM_Counter_GetStatus</a></li>
</ul>
<p class="endtd">Newly added and updated enums:</p><ul>
<li><a class="el" href="group__group__tcpwm__data__structures__pwm.html#ga8c9f3eeb107eae3ea2a485f9169e3759">cy_en_hrpwm_operating_frequency_t</a></li>
<li><a class="el" href="group__group__tcpwm__data__structures__pwm.html#ga19e8127ddd17a33fe06608855cd10c4d">cy_en_kill_line_polarity_t</a></li>
<li><a class="el" href="group__group__tcpwm__data__structures__pwm.html#gab0adb8ee7ffc443e3ce016aec3d447c8">cy_en_line_select_config_t</a></li>
<li><a class="el" href="structcy__stc__tcpwm__pwm__config__t.html">cy_stc_tcpwm_pwm_config_t</a> </li>
</ul>
</td><td>Support for line select, HRPWM enhancements, enhancement in DT BUFF and SWAP ENABLE handling.   </td></tr>
<tr>
<td>1.60 </td><td>Newly Added <a class="el" href="group__group__tcpwm__functions__common.html#ga1d580c145e6e0a2bcccb3bc4c5e5b0aa">Cy_TCPWM_OutputTriggerSetup</a> API and code enhancement.  </td><td>Glitch filter support added for TCPWM version 3 and above.  </td></tr>
<tr>
<td>1.50 </td><td><ul>
<li>
Newly Added <a class="el" href="group__group__tcpwm__enums.html#gadbc4d3602412fbbaf92175ef56258029">cy_en_gf_depth_value_t</a>, <a class="el" href="group__group__tcpwm__data__structures__counter.html#ga911ca130e2c8ca40b252bd1f7b78c3e5">cy_en_counter_direction_t</a> , <a class="el" href="group__group__tcpwm__data__structures__pwm.html#ga5ba36f547c6817ce1f2a5ed6e89283ff">cy_en_tcpwm_dithering_t</a> and <a class="el" href="group__group__tcpwm__data__structures__pwm.html#ga3ba205fa719411684a55b9fc3ad7b79c">cy_en_dithering_limiter_t</a> enums.<br />
 </li>
<li>
Newly Added <a class="el" href="group__group__tcpwm__functions__common.html#ga9cce3f9a4b4f0d381565599279a7dd18">Cy_TCPWM_Block_EnableSwap</a> , <a class="el" href="group__group__tcpwm__functions__common.html#gaf6fb96fe51a6e4b1edeac970ba113166">Cy_TCPWM_InputTriggerSetupWithGF</a> , <a class="el" href="group__group__tcpwm__functions__counter.html#ga2abece06e0b8d5fe890886ad883e7a41">Cy_TCPWM_Counter_EnableSwap</a> , <a class="el" href="group__group__tcpwm__functions__quaddec.html#ga6bbffc52d3ebef41c39336b4b9444341">Cy_TCPWM_QuadDec_EnableSwap</a> and <a class="el" href="group__group__tcpwm__functions__shiftreg.html#gaa2f8fce9abfa511020e6f8b696b476e0">Cy_TCPWM_Shiftreg_EnableSwap</a> APIs.<br />
 </li>
</ul>
</td><td><ul>
<li>
Support for IP version 3.0.<br />
 </li>
<li>
Bug fixes.<br />
 </li>
<li>
Documentation update. </li>
</ul>
</td></tr>
<tr>
<td>1.40 </td><td>Support for CAT1B and CAT1D devices is added. No changes in public APIs interface and behavior.  </td><td>New devices support added.  </td></tr>
<tr>
<td>1.30.1 </td><td>Updated documentation of PWM mode.  </td><td>Documentation enhancement.   </td></tr>
<tr>
<td>1.30 </td><td>Added new option to Swap Overflow/Underflow behavior in PWM Centre/Asymmetric Alignment modes. </td><td>New feature.  </td></tr>
<tr>
<td>1.20 </td><td>Added new features: Shift Register, New QuadDec modes, Additional Compare/Capture Buffer. </td><td>New silicon family support.  </td></tr>
<tr>
<td>1.10.2 </td><td>Minor documentation updates. </td><td>Documentation enhancement.  </td></tr>
<tr>
<td>1.10.1 </td><td>Added header guards CY_IP_MXTCPWM. </td><td>To enable the PDL compilation with wounded out IP blocks.  </td></tr>
<tr>
<td rowspan="2">1.10 </td><td>Flattened the organization of the driver source code into the single source directory and the single include directory.  </td><td>Driver library directory-structure simplification.  </td></tr>
<tr>
<td>Added register access layer. Use register access macros instead of direct register access using dereferenced pointers. </td><td>Makes register access device-independent, so that the PDL does not need to be recompiled for each supported part number.  </td></tr>
<tr>
<td>1.0.1 </td><td>Added a deviation to the MISRA Compliance section. Added function-level code snippets. </td><td>Documentation update and clarification  </td></tr>
<tr>
<td>1.0 </td><td>Initial version </td><td></td></tr>
</table>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
API Reference</h2></td></tr>
<tr class="memitem:group__group__tcpwm__common"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tcpwm__common.html">Common</a></td></tr>
<tr class="memdesc:group__group__tcpwm__common"><td class="mdescLeft">&#160;</td><td class="mdescRight">Common API for the Timer Counter PWM Block. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__group__tcpwm__counter"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tcpwm__counter.html">Timer/Counter (TCPWM)</a></td></tr>
<tr class="memdesc:group__group__tcpwm__counter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Driver API for Timer/Counter. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__group__tcpwm__pwm"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tcpwm__pwm.html">PWM (TCPWM)</a></td></tr>
<tr class="memdesc:group__group__tcpwm__pwm"><td class="mdescLeft">&#160;</td><td class="mdescRight">Driver API for PWM. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__group__tcpwm__quaddec"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tcpwm__quaddec.html">Quadrature Decoder (TCPWM)</a></td></tr>
<tr class="memdesc:group__group__tcpwm__quaddec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Driver API for Quadrature Decoder. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__group__tcpwm__shiftreg"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tcpwm__shiftreg.html">Shift Register (TCPWM)</a></td></tr>
<tr class="memdesc:group__group__tcpwm__shiftreg"><td class="mdescLeft">&#160;</td><td class="mdescRight">Driver API for Shift Register. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__group__tcpwm__motif"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__tcpwm__motif.html">Motion Interface (TCPWM)</a></td></tr>
<tr class="memdesc:group__group__tcpwm__motif"><td class="mdescLeft">&#160;</td><td class="mdescRight">Driver API for Motion Interface. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part
<div id="nav-path" class="navpath">
    <ul>
        <li class="footer">
            Generated for <b>MTB CAT1 Peripheral driver library</b> by <b>Cypress Semiconductor Corporation</b>.
            All rights reserved.
        </li>
    </ul>
</div>
-->
</body>
</html>
